package com.neuedu.corejava.ch12;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

/**
 * 20190814早上
 * 
 * @author admin
 *
 */
public class MyFileReader {

	/**
	 * 拷贝文件，并把小写l全部修改为大小L
	 * @param src
	 * @param desc
	 */
	public void copyAndFileter(String src, String desc) {
		if (src == null || desc == null) {
			return;
		}

		File srcFile = new File(src);
		File descfFile = new File(desc);

		if (!srcFile.exists()) {
			return;
		}
		
		//定义流
		//节点流
		FileReader reader=null;
		FileWriter writer=null;
		
		//处理流
		BufferedReader bufferedReader=null;

		try {
			if (!descfFile.exists()) {
				descfFile.getParentFile().mkdirs();
				descfFile.createNewFile();
			}
			
			reader=new FileReader(srcFile);//节点流
			bufferedReader=new BufferedReader(reader);//处理流
			writer=new FileWriter(descfFile);//节点流
			writer.write("\r\n");//换行
			
			//一次读取一行内容，文件读取完毕返回null
			String data=null;
			while((data=bufferedReader.readLine())!=null){
				//过滤，进行大小写转换
				String newDataString=data.replaceAll("l", "L");
				//写
				writer.write(newDataString); 
			}
					
			
		
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(writer!=null){
				try {
					writer.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(bufferedReader!=null){
				try {
					bufferedReader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(reader!=null){
				try {
					reader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}

	//
	/**
	 * 把一段文本内容写入到一个指定文件中
	 * 
	 * @param fileName
	 * @param content
	 */
	public void WriteFile(String fileName, String content) {
		if (fileName == null) {
			return;
		}
		File file = new File(fileName);

		FileOutputStream outputStream = null;

		try {
			// 判断文件是否存在，有则跳过，无创建
			if (!file.exists()) {
				file.getParentFile().mkdirs();
				file.createNewFile();
			}
			// 文件的写入有两种模式：重写，追加
			// --false:重写 --true：追加
			outputStream = new FileOutputStream(file, false);
			// 需要把字符串转换成字节数字，转换时需要注意可能产生乱码
			outputStream.write(content.getBytes());

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (outputStream != null) {
				try {
					outputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFileReader myFileReader = new MyFileReader();
		//把一段文本内容写入到一个指定文件中
		myFileReader.WriteFile("c:\\test.txt", "hello world");
		System.out.println("文件新增成功");
		
		// 拷贝文件，并把小写l全部修改为大小L
		myFileReader.copyAndFileter("c:\\test.txt","c:\\test1.txt");

	}

}
